package plug;

import java.awt.Component;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

import javax.swing.JPanel;

import Controller.MainController;
import Model.Exercice;

@SuppressWarnings("serial")
public class Introspection extends JPanel {

	public static MainController control; 
	public static Introspection win;
	public static Object exo;					// Objet pour le polymorphisme

	public Introspection(MainController control, Exercice exo) {

		Introspection.control = control;
		Introspection.win = this;

		// Recuperation du type de l'objet "exo"
		Class<?> c = exo.getClass();
		String nom = c.getName();

		// On cast l'objet "exo" en "Exercice" pour pouvoir l'utiliser
		Introspection.exo = c.cast(exo);

		// Chemin de la classe affichant la structure de l'exo
		String classe = nom + "PanelProf";

		try {
			// On fait appel au constructeur de la nouvelle classe
			Class<?> c2 = Class.forName(classe);
			Constructor<?> v = c2.getConstructor();
			Object o = v.newInstance();
			this.add((Component) o);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (NoSuchMethodException e) {
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			e.printStackTrace();
		}

	}

}